package net.biancheng.common.core;

import net.biancheng.common.constant.HttpStatus;

import java.util.HashMap;

/**
 * @author: lb
 * @date: 2023/3/6 13:32
 * @desc: 操作公共返回类
 **/
public class CommonResult extends HashMap<String, Object> {

    public static final String SUCCESS_MESSAGE = "操作成功";//成功提示信息

    public static final String ERROR_MESSAGE = "操作失败";//失败提示信息

    /** 状态码 */
    public static final String CODE_TAG = "code";

    /** 返回内容 */
    public static final String MSG_TAG = "message";

    /** 数据对象 */
    public static final String DATA_TAG = "data";

    /**
     * 初始化一个新创建的 AjaxResult 对象
     *
     * @param code 状态码
     * @param message 返回内容
     */
    public CommonResult(int code, String message)
    {
        super.put(CODE_TAG, code);
        super.put(MSG_TAG, message);
    }

    /**
     * 初始化一个新创建的 AjaxResult 对象
     *
     * @param code 状态码
     * @param message 返回内容
     * @param data 数据对象
     */
    public CommonResult(int code, String message, Object data)
    {
        super.put(CODE_TAG, code);
        super.put(MSG_TAG, message);
        if (data != null)
        {
            super.put(DATA_TAG, data);
        }
    }

    /**
     * 成功返回结果
     * @return
     */
    public static CommonResult success(){
        return CommonResult.success(SUCCESS_MESSAGE,null);
    }

    /**
     * 成功返回结果
     * @param message 提示信息
     * @return
     */
    public static CommonResult success(String message){
        return CommonResult.success(message,null);
    }

    /**
     * 成功返回结果
     * @param data 数据
     * @return
     */
    public static CommonResult success(Object data){
        return CommonResult.success(SUCCESS_MESSAGE, data);
    }

    /**
     * 成功返回结果
     * @param message 提示信息
     * @param data 数据
     * @return
     */
    public static CommonResult success(String message, Object data){
        return new CommonResult(HttpStatus.SUCCESS, message, data);
    }

    /**
     * 返回成功消息
     *
     * @param code 状态码
     * @param message 返回内容
     * @return 警告消息
     */
    public static CommonResult success(int code, String message)
    {
        return new CommonResult(code, message, null);
    }

    /**
     * 失败返回结果
     * @return
     */
    public static CommonResult error(){
        return CommonResult.error(ERROR_MESSAGE, null);
    }


    /**
     * 失败返回结果
     * @param message 提示信息
     * @return
     */
    public static CommonResult error(String message){
        return CommonResult.error(message, null);
    }

    /**
     * 失败返回结果
     * @param data 数据
     * @return
     */
    public static CommonResult error(Object data){
        return CommonResult.error(ERROR_MESSAGE, data);
    }

    /**
     * 失败返回结果
     * @param message 提示信息
     * @param data 数据
     * @return
     */
    public static CommonResult error(String message, Object data){
        return new CommonResult(HttpStatus.ERROR, message, data);
    }

    /**
     * 返回错误消息
     *
     * @param code 状态码
     * @param message 返回内容
     * @return 警告消息
     */
    public static CommonResult error(int code, String message)
    {
        return new CommonResult(code, message, null);
    }

}
